package com.fita.api.dto.request;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.commons.lang3.StringUtils;
import org.opentravel.ota._2003._05.CompanyNamePrefType;
import org.opentravel.ota._2003._05.CompanyNameType;
import org.opentravel.ota._2003._05.CountryNameType;
import org.opentravel.ota._2003._05.CustomerPrimaryAdditionalType;
import org.opentravel.ota._2003._05.CustomerType;
import org.opentravel.ota._2003._05.CustomerType.CustLoyalty;
import org.opentravel.ota._2003._05.CustomerType.Telephone;
import org.opentravel.ota._2003._05.OTAVehResRQ;
import org.opentravel.ota._2003._05.OTAVehResRQ.VehResRQCore;
import org.opentravel.ota._2003._05.OTAVehResRQ.VehResRQInfo;
import org.opentravel.ota._2003._05.POSType;
import org.opentravel.ota._2003._05.PaymentFormType;
import org.opentravel.ota._2003._05.PaymentFormType.Voucher;
import org.opentravel.ota._2003._05.PersonNameType;
import org.opentravel.ota._2003._05.RateQualifierType;
import org.opentravel.ota._2003._05.SourceType;
import org.opentravel.ota._2003._05.SourceType.RequestorID;
import org.opentravel.ota._2003._05.StateProvType;
import org.opentravel.ota._2003._05.TPAExtensionsType;
import org.opentravel.ota._2003._05.VehicleCoreType;
import org.opentravel.ota._2003._05.VehiclePrefType;
import org.opentravel.ota._2003._05.VehicleRentalCoreType;
import org.opentravel.ota._2003._05.VehicleReservationRQAdditionalInfoType;
import org.opentravel.ota._2003._05.VehicleReservationRQCoreType;
import org.opentravel.ota._2003._05.VehicleTransmissionType;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fita.api.dto.common.CommonVariable;
import com.fita.api.util.XmlUtils;
import com.fita.entity.dto.ehi.response.AddressesLines;
import com.fita.entity.dto.ehi.response.SpecialEquipPrefe;
import com.fita.entity.dto.ehi.response.Telephones;

/**
 * 
 *
 * @author LZJ
 *
 */
public class VehicleReservationRequest {
    
    /** 供应商 code */
    private String brand;
    
     /**
     * 车辆可用状态
     * 
     *  - Available=可用车辆
     *  - All=所有车辆
     */ 
    private String status;
    
     /** 取车时间 */
    @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date pickupDateTime;
    
    /** 还车时间 */
    @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date returnDateTime;
    
    /** 取车地点 */
    private String pickupLocation;
    
    /** 还车地点 */
    private String returnLocation;
    
    /** 称呼 */
    private String namePrefix;
    
    /** 联系人 */
    private String givenName;
    
    /** 姓氏 */
    private String surname;
    
    /** 名称后缀 */
    private String nameSuffix;
    
    
    private List <Telephones> telephones;
    
    /** 电子邮箱 1-79个字符*/
    private String email;
    

    
      /** 详细地址 */
    private List <AddressesLines> addressLines;
    
    /** 城市 */
    private String cityName;
    
    /** 邮编 */
    private String postalCode;
    
    
    /** 洲代号 */
    private String stateCode;
    
    /** 国家 */
    private String countryNameCode;
    
    
    /** 品牌忠诚度 */
    private List <CustLoyaltys> custLoyaltys;  
    
    /**  */
    private String vendorPrefCode;
    
    /** 是否空调车 */
    private Boolean airConditionInd;
    
    /** 
     * 自动挡/手动挡
     * 
     *  -Automatic=自动
     *  -Manual=手动
     */
    private String transmissionType;
    
    /** 
     * 燃油类型
     * 
     *  - Unspecified=未指定
     *  - Diesel=柴油
     *  ...
     */
    private String fuelType;
    
    /**
     * 驱动类型
     * 
     *  - Unspecified=未指定
     *  - AWD
     *  - 4WD=四轮驱动
     */
    private String driveType;
    
    
    /** 车辆类别 */
    private String vehTypeCategory;
    
    /** 车门 */
    
    private String doorCounts;
    
    
    /** 车辆型号 */
    private String vehClassSize;
    
    /** 驾龄 */
    private Integer driverTypeAge;
    
    /** 优惠券类型 */
    private String rateQualifier;
    
    /** 附加设备 */
    private List <SpecialEquipPrefe> specialEquipPrefes;
    
    /**  */
    private String referenceID;    
    
    /**  */
    @JsonFormat(pattern ="yyyy-MM-dd HH:mm:ss")
    private Date referenceDateTime;
    
    /**  */
    private String referenceType;
    
    private String env;
    
    /**
     * 航班信息
     * 
     */    
    
    private String arrivalDetailsNumber;
    private String airCompanyCode;
    

    /**
     * 付款方式
     * 
     */
    
    private String  requestorId;
    
    /**
     * pos 
     */
    
    private String sourceId;
    
    private String companyShortName;

    private String seriesCode;
    
    
    /**
     * The default constructor
     */
    public VehicleReservationRequest() {
        
    }
    
    /**
     * @param env
     * @return
     */
    public VehicleReservationRequest initialize(String env) {
        this.env = env;
        return this;
    }
    
    
    
    
    /**
     * @return
     * 
     * 校验获取的参数
     */
    public boolean isValid() {
        boolean result = false;
        if(StringUtils.equalsIgnoreCase(this.brand, "Enterprise")) {
            
            result =  telephones != null &&  !telephones.isEmpty()&& telephones.get(0).getPhoneNumber() != null;
            
            if (!result) {
                
                
                return result;
            }
        }
        
        result = StringUtils.isNotBlank(status) &&
                   pickupDateTime != null && 
                   returnDateTime != null &&
                   StringUtils.isNotBlank(pickupLocation) && 
                   StringUtils.isNotBlank(returnLocation) &&
                   StringUtils.isNotBlank(givenName)&&
                   StringUtils.isNotBlank(surname)&&
                   StringUtils.isNotBlank(vendorPrefCode)&&
                   airConditionInd != null  &&
                   StringUtils.isNotBlank(transmissionType)&&
                   StringUtils.isNotBlank(vehTypeCategory)&&
                   StringUtils.isNotBlank(vehClassSize)&&              
                   driverTypeAge != null&&                 
                   StringUtils.isNotBlank(rateQualifier);
                   //StringUtils.isNotBlank(sourceId);
        
        return result;
    }
    
    
    
    /**
     * @return
     * @throws ParserConfigurationException 
     */
    public OTAVehResRQ generesRq() throws ParserConfigurationException {
        
        OTAVehResRQ rq = new OTAVehResRQ();
        
        rq.setPrimaryLangID(CommonVariable.LANGUAGE);
        rq.setTarget(env);
        rq.setVersion(CommonVariable.VERSION);
        rq.setTransactionIdentifier("100000001");
        rq.setSequenceNmbr(new BigInteger("1"));
        
        POSType posType = this.generesPos();
        rq.setPOS(posType);
        
        VehResRQCore rqCore = this.generesRQCore();
        VehResRQInfo rqInfo = this.generesRQInfo();
        
        
        rq.setVehResRQCore(rqCore);
        rq.setVehResRQInfo(rqInfo);
        
       
        
        return rq;
        
    }
    
    
    
    
    /**
     * @return
     */
    private POSType generesPos() {
        
        POSType pos = new POSType();
        
        // source1
        SourceType sourceType1 = new SourceType();
        sourceType1.setISOCountry("CN");
        
        // requestID
        RequestorID requestorID = new RequestorID();
        requestorID.setType(CommonVariable.REQUESTOR_TYPE);
//        requestorID.setID("XMLRTA");
        requestorID.setID(this.sourceId);
        
        // companyName
        CompanyNameType companyName = new CompanyNameType();
        if(StringUtils.equalsAnyIgnoreCase(env, "Production")) {
            companyName.setCode("CU");
            companyName.setCompanyShortName("CNTVLSVCXML");
        } else if(StringUtils.equalsAnyIgnoreCase(env, "Testing")) {
            companyName.setCode("EX");
            companyName.setCompanyShortName("EHIXMLTEST");
        }
        
        requestorID.setCompanyName(companyName);
        sourceType1.setRequestorID(requestorID);
        
        // source2
        SourceType sourceType2 = new SourceType();
        
        // requestID
        requestorID = new RequestorID();
        requestorID.setType("4");
        
       
        requestorID.setID(this.requestorId);
            
      
        
        requestorID.setIDContext("IATA");
        
        sourceType2.setRequestorID(requestorID);
        
        pos.getSource().add(sourceType1);
        pos.getSource().add(sourceType2);
        
        return pos;
        
    }
    
    /**
     * @return
     * @throws ParserConfigurationException 
     */
    private VehResRQCore generesRQCore() throws ParserConfigurationException {
        
        VehResRQCore core = new VehResRQCore();
        
        core.setStatus(this.status);
        
        
        // VehRentalCore    
        
        VehicleRentalCoreType vehicleRentalCoreType = new VehicleRentalCoreType();
        vehicleRentalCoreType.setPickUpDateTime(XmlUtils.convertToXMLGregorianCalendar(this.pickupDateTime));
        vehicleRentalCoreType.setReturnDateTime(XmlUtils.convertToXMLGregorianCalendar(this.returnDateTime));
        
        VehicleRentalCoreType.PickUpLocation pickUpLocation = new VehicleRentalCoreType.PickUpLocation();
        pickUpLocation.setLocationCode(this.pickupLocation);
        vehicleRentalCoreType.getPickUpLocation().add(pickUpLocation);
        
        VehicleRentalCoreType.ReturnLocation returnLocation = new VehicleRentalCoreType.ReturnLocation();
        returnLocation.setLocationCode(this.returnLocation);
        vehicleRentalCoreType.setReturnLocation(returnLocation);
        
        core.setVehRentalCore(vehicleRentalCoreType);
        
        //customer
        CustomerPrimaryAdditionalType customerType = new CustomerPrimaryAdditionalType();
        CustomerPrimaryAdditionalType.Primary primary = new CustomerPrimaryAdditionalType.Primary();   
        
        PersonNameType personNameType = new PersonNameType();
        personNameType.getNamePrefix().add(this.namePrefix);
        personNameType.getGivenName().add(this.givenName);
        personNameType.setSurname(this.surname);
        personNameType.getNameSuffix().add(this.nameSuffix);
        
        primary.getPersonName().add(personNameType);        
        
        if(StringUtils.equalsIgnoreCase(this.brand, "Enterprise")) {
            for(Telephones telephones : this.telephones) {
                
                
                Telephone telephone = new Telephone();        
                telephone.setPhoneUseType(telephones.getPhoneUseType());
                telephone.setAreaCityCode(telephones.getAreaCityCode());
                telephone.setPhoneNumber(telephones.getPhoneNumber());
                telephone.setCountryAccessCode(telephones.getCountryAccessCode());
                
                primary.getTelephone().add(telephone);
               
           }
        }
        
        CustomerType.Email email = new CustomerType.Email();       
        
        email.setValue(this.email);       
        primary.getEmail().add(email);
        
          CustomerType.Address addressType = new CustomerType.Address();
          
          System.out.println("这里是异常");
            
          if(addressLines != null && !addressLines.isEmpty()) {
              for (AddressesLines addressLines : addressLines) {
                    addressType.getAddressLine().add(addressLines.getAddressLine());
               }
          }
        
        
        addressType.setCityName(this.getCityName());
        addressType.setPostalCode(this.getPostalCode());        
        
        StateProvType stateProvType = new StateProvType();
        stateProvType.setStateCode(this.getStateCode());        
        
        CountryNameType countryNameType = new CountryNameType();
        countryNameType.setCode(this.getCountryNameCode());
        
        addressType.setStateProv(stateProvType);
        addressType.setCountryName(countryNameType);
        primary.getAddress().add(addressType);   
        
        if(custLoyaltys != null && !custLoyaltys.isEmpty()) {
            for (CustLoyaltys custLoyaltys : custLoyaltys) {
                
                CustLoyalty custLoyalty = new CustLoyalty();      
                
                custLoyalty.setProgramID(custLoyaltys.getProgramID());
                custLoyalty.setMembershipID(custLoyaltys.getMembershipID());
                custLoyalty.setTravelSector(custLoyaltys.getTravelSector());

                primary.getCustLoyalty().add(custLoyalty);          
                
            }
        }
        
        // VendorPrefs
        CompanyNamePrefType vendorPref = new CompanyNamePrefType();
        vendorPref.setCode(this.vendorPrefCode);
        
       core.setVendorPref(vendorPref);
        
        
        // VehPrefs
        
        VehiclePrefType  vehPrefs = new VehiclePrefType();
        
        if (this.airConditionInd != null) {
            vehPrefs.setAirConditionInd(this.airConditionInd);
        }
        if (StringUtils.isNotBlank(this.transmissionType)) {
            vehPrefs.setTransmissionType(VehicleTransmissionType.fromValue(this.transmissionType));
        }
        
        if (StringUtils.isNotBlank(this.fuelType)) {
            vehPrefs.setFuelType(this.fuelType);
        } else {
            vehPrefs.setFuelType("Unspecified");
        }
        
        if (StringUtils.isNoneBlank(this.driveType)) {
            vehPrefs.setDriveType(this.driveType);
        } else {
            vehPrefs.setDriveType("Unspecified");
        }
        
        VehicleCoreType.VehType vehType = new VehicleCoreType.VehType();
        vehType.setVehicleCategory(this.vehTypeCategory);
        if (StringUtils.isNoneBlank(this.doorCounts)) {
            vehType.setDoorCount(this.doorCounts);
        }
        vehPrefs.setVehType(vehType);
        
        VehicleCoreType.VehClass vehClass = new VehicleCoreType.VehClass();
        vehClass.setSize(this.vehClassSize);
        vehPrefs.setVehClass(vehClass);
        
        core.setVehPref(vehPrefs);
               
        // DriverType
        VehicleReservationRQCoreType.DriverType driverType = new VehicleReservationRQCoreType.DriverType();
        driverType.setAge(this.driverTypeAge);
        
        core.getDriverType().add(driverType);
        
        
        // RateQualifier 
        RateQualifierType rateQualifier = new RateQualifierType();        
        rateQualifier.setRateQualifier(this.rateQualifier);
        
        core.setRateQualifier(rateQualifier);
        
        //SpecialEquipPrefs
        
        if(specialEquipPrefes != null && !specialEquipPrefes.isEmpty()) {
            
            VehicleReservationRQCoreType.SpecialEquipPrefs specialEquipPrefs = new VehicleReservationRQCoreType.SpecialEquipPrefs();
            for (SpecialEquipPrefe specialEquipPrefe : specialEquipPrefes) {
                
                
                VehicleReservationRQCoreType.SpecialEquipPrefs.SpecialEquipPref specialEquipPref = new VehicleReservationRQCoreType.SpecialEquipPrefs.SpecialEquipPref();
                specialEquipPref.setEquipType(specialEquipPrefe.getSpecialEquipType());
                specialEquipPref.setQuantity(specialEquipPrefe.getSpecialEquipQuantity());
                
                specialEquipPrefs.getSpecialEquipPref().add(specialEquipPref);
                
                
                
            }
            
            core.setSpecialEquipPrefs(specialEquipPrefs);
        }
               
    
        customerType.setPrimary(primary);
        
        core.setCustomer(customerType);
        
     
        
        TPAExtensionsType extentions = new TPAExtensionsType();
        DocumentBuilderFactory dbFactory =
        DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.newDocument();
        
        Element element = doc.createElement("TPA_Extension_Flag");
        Attr attr = doc.createAttribute("EnhancedTotalPrice");
        attr.setValue("true");
        element.setAttributeNode(attr);

        extentions.getAny().add(element);
        
        core.setTPAExtensions(extentions);
        
        
        return core;
        
    }
    
    
    /**
     * @return
     * @throws ParserConfigurationException 
     */
    private VehResRQInfo generesRQInfo() throws ParserConfigurationException {
        
        VehResRQInfo infoType = new VehResRQInfo();
        
//      VehicleArrivalDetailsType arrivalDetails = new VehicleArrivalDetailsType();
//      arrivalDetails.setTransportationCode("14");
//      arrivalDetails.setNumber(this.arrivalDetailsNumber);
//      CompanyNameType operatingCompany = new CompanyNameType();
//      operatingCompany.setCode(this.airCompanyCode);
        VehicleReservationRQAdditionalInfoType.Reference reference = new VehicleReservationRQAdditionalInfoType.Reference();
        reference.setID(this.referenceID);
        reference.setDateTime(XmlUtils.convertToXMLGregorianCalendar(new Date()));
        reference.setType(this.referenceType);
        
//      arrivalDetails.setOperatingCompany(operatingCompany);
//      
//      infoType.setArrivalDetails(arrivalDetails);
        infoType.setReference(reference);
        
        VehicleReservationRQAdditionalInfoType.RentalPaymentPref payment = new VehicleReservationRQAdditionalInfoType.RentalPaymentPref();
        Voucher voucher = new PaymentFormType.Voucher();
        
        if(this.seriesCode != null && !this.seriesCode.isEmpty()) {
          
          voucher.setSeriesCode(this.seriesCode);
          payment.setVoucher(voucher);
          infoType.getRentalPaymentPref().add(payment);
           //RentalPaymentPref
            infoType.getRentalPaymentPref().get(0).getVoucher().setSeriesCode(this.seriesCode);
        }
        
//      TPAExtensionsType extentions = new TPAExtensionsType();
//        DocumentBuilderFactory dbFactory =
//        DocumentBuilderFactory.newInstance();
//        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
//        Document doc = dBuilder.newDocument();
//        
//        Element element = doc.createElement("TPA_Extension_Flag");
       
//        extentions.getAny().add(element);
//        
//        infoType.setTPAExtensions(extentions);
        
       
        
        
        return infoType;
        
    }

    /**
     * @return the brand
     */
    public String getBrand() {
        return brand;
    }

    /**
     * @return the status
     */
    public String getStatus() {
        return status;
    }

    /**
     * @return the pickupDateTime
     */
    public Date getPickupDateTime() {
        return pickupDateTime;
    }

    /**
     * @return the returnDateTime
     */
    public Date getReturnDateTime() {
        return returnDateTime;
    }

    /**
     * @return the pickupLocation
     */
    public String getPickupLocation() {
        return pickupLocation;
    }

    /**
     * @return the returnLocation
     */
    public String getReturnLocation() {
        return returnLocation;
    }

    /**
     * @return the namePrefix
     */
    public String getNamePrefix() {
        return namePrefix;
    }

    /**
     * @return the givenName
     */
    public String getGivenName() {
        return givenName;
    }

    /**
     * @return the surname
     */
    public String getSurname() {
        return surname;
    }

    /**
     * @return the nameSuffix
     */
    public String getNameSuffix() {
        return nameSuffix;
    }

    /**
     * @return the telephones
     */
    public List<Telephones> getTelephones() {
        return telephones;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @return the addressLines
     */
    public List<AddressesLines> getAddressLines() {
        return addressLines;
    }

    /**
     * @return the cityName
     */
    public String getCityName() {
        return cityName;
    }

    /**
     * @return the postalCode
     */
    public String getPostalCode() {
        return postalCode;
    }

    /**
     * @return the stateCode
     */
    public String getStateCode() {
        return stateCode;
    }

    /**
     * @return the countryNameCode
     */
    public String getCountryNameCode() {
        return countryNameCode;
    }

    /**
     * @return the custLoyaltys
     */
    public List<CustLoyaltys> getCustLoyaltys() {
        return custLoyaltys;
    }

    /**
     * @return the vendorPrefCode
     */
    public String getVendorPrefCode() {
        return vendorPrefCode;
    }

    /**
     * @return the airConditionInd
     */
    public Boolean getAirConditionInd() {
        return airConditionInd;
    }

    /**
     * @return the transmissionType
     */
    public String getTransmissionType() {
        return transmissionType;
    }

    /**
     * @return the fuelType
     */
    public String getFuelType() {
        return fuelType;
    }

    /**
     * @return the driveType
     */
    public String getDriveType() {
        return driveType;
    }

    /**
     * @return the vehTypeCategory
     */
    public String getVehTypeCategory() {
        return vehTypeCategory;
    }

    /**
     * @return the doorCounts
     */
    public String getDoorCounts() {
        return doorCounts;
    }

    /**
     * @return the vehClassSize
     */
    public String getVehClassSize() {
        return vehClassSize;
    }

    /**
     * @return the driverTypeAge
     */
    public Integer getDriverTypeAge() {
        return driverTypeAge;
    }

    /**
     * @return the rateQualifier
     */
    public String getRateQualifier() {
        return rateQualifier;
    }


    /**
     * @return the referenceID
     */
    public String getReferenceID() {
        return referenceID;
    }

    /**
     * @return the referenceDateTime
     */
    public Date getReferenceDateTime() {
        return referenceDateTime;
    }

    /**
     * @return the referenceType
     */
    public String getReferenceType() {
        return referenceType;
    }

    /**
     * @return the env
     */
    public String getEnv() {
        return env;
    }

    /**
     * @param brand the brand to set
     */
    public void setBrand(String brand) {
        this.brand = brand;
    }

    /**
     * @param status the status to set
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * @param pickupDateTime the pickupDateTime to set
     */
    public void setPickupDateTime(Date pickupDateTime) {
        this.pickupDateTime = pickupDateTime;
    }

    /**
     * @param returnDateTime the returnDateTime to set
     */
    public void setReturnDateTime(Date returnDateTime) {
        this.returnDateTime = returnDateTime;
    }

    /**
     * @param pickupLocation the pickupLocation to set
     */
    public void setPickupLocation(String pickupLocation) {
        this.pickupLocation = pickupLocation;
    }

    /**
     * @param returnLocation the returnLocation to set
     */
    public void setReturnLocation(String returnLocation) {
        this.returnLocation = returnLocation;
    }

    /**
     * @param namePrefix the namePrefix to set
     */
    public void setNamePrefix(String namePrefix) {
        this.namePrefix = namePrefix;
    }

    /**
     * @param givenName the givenName to set
     */
    public void setGivenName(String givenName) {
        this.givenName = givenName;
    }

    /**
     * @param surname the surname to set
     */
    public void setSurname(String surname) {
        this.surname = surname;
    }

    /**
     * @param nameSuffix the nameSuffix to set
     */
    public void setNameSuffix(String nameSuffix) {
        this.nameSuffix = nameSuffix;
    }

    /**
     * @param telephones the telephones to set
     */
    public void setTelephones(List<Telephones> telephones) {
        this.telephones = telephones;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @param addressLines the addressLines to set
     */
    public void setAddressLines(List<AddressesLines> addressLines) {
        this.addressLines = addressLines;
    }

    /**
     * @param cityName the cityName to set
     */
    public void setCityName(String cityName) {
        this.cityName = cityName;
    }

    /**
     * @param postalCode the postalCode to set
     */
    public void setPostalCode(String postalCode) {
        this.postalCode = postalCode;
    }

    /**
     * @param stateCode the stateCode to set
     */
    public void setStateCode(String stateCode) {
        this.stateCode = stateCode;
    }

    /**
     * @param countryNameCode the countryNameCode to set
     */
    public void setCountryNameCode(String countryNameCode) {
        this.countryNameCode = countryNameCode;
    }

    /**
     * @param custLoyaltys the custLoyaltys to set
     */
    public void setCustLoyaltys(List<CustLoyaltys> custLoyaltys) {
        this.custLoyaltys = custLoyaltys;
    }

    /**
     * @param vendorPrefCode the vendorPrefCode to set
     */
    public void setVendorPrefCode(String vendorPrefCode) {
        this.vendorPrefCode = vendorPrefCode;
    }

    /**
     * @param airConditionInd the airConditionInd to set
     */
    public void setAirConditionInd(Boolean airConditionInd) {
        this.airConditionInd = airConditionInd;
    }

    /**
     * @param transmissionType the transmissionType to set
     */
    public void setTransmissionType(String transmissionType) {
        this.transmissionType = transmissionType;
    }

    /**
     * @param fuelType the fuelType to set
     */
    public void setFuelType(String fuelType) {
        this.fuelType = fuelType;
    }

    /**
     * @param driveType the driveType to set
     */
    public void setDriveType(String driveType) {
        this.driveType = driveType;
    }

    /**
     * @param vehTypeCategory the vehTypeCategory to set
     */
    public void setVehTypeCategory(String vehTypeCategory) {
        this.vehTypeCategory = vehTypeCategory;
    }

    /**
     * @param doorCounts the doorCounts to set
     */
    public void setDoorCounts(String doorCounts) {
        this.doorCounts = doorCounts;
    }

    /**
     * @param vehClassSize the vehClassSize to set
     */
    public void setVehClassSize(String vehClassSize) {
        this.vehClassSize = vehClassSize;
    }

    /**
     * @param driverTypeAge the driverTypeAge to set
     */
    public void setDriverTypeAge(Integer driverTypeAge) {
        this.driverTypeAge = driverTypeAge;
    }

    /**
     * @param rateQualifier the rateQualifier to set
     */
    public void setRateQualifier(String rateQualifier) {
        this.rateQualifier = rateQualifier;
    }

    
    /**
     * @param referenceID the referenceID to set
     */
    public void setReferenceID(String referenceID) {
        this.referenceID = referenceID;
    }

    /**
     * @param referenceDateTime the referenceDateTime to set
     */
    public void setReferenceDateTime(Date referenceDateTime) {
        this.referenceDateTime = referenceDateTime;
    }

    /**
     * @param referenceType the referenceType to set
     */
    public void setReferenceType(String referenceType) {
        this.referenceType = referenceType;
    }

    /**
     * @param env the env to set
     */
    public void setEnv(String env) {
        this.env = env;
    }



    public String getArrivalDetailsNumber() {
        return arrivalDetailsNumber;
    }

    public void setArrivalDetailsNumber(String arrivalDetailsNumber) {
        this.arrivalDetailsNumber = arrivalDetailsNumber;
    }


    public String getAirCompanyCode() {
        return airCompanyCode;
    }

    public void setAirCompanyCode(String airCompanyCode) {
        this.airCompanyCode = airCompanyCode;
    }

    public String getRequestorId() {
        return requestorId;
    }

    public void setRequestorId(String requestorId) {
        this.requestorId = requestorId;
    }

    public List<SpecialEquipPrefe> getSpecialEquipPrefes() {
        return specialEquipPrefes;
    }

    public void setSpecialEquipPrefes(List<SpecialEquipPrefe> specialEquipPrefes) {
        this.specialEquipPrefes = specialEquipPrefes;
    }

    public String getSourceId() {
        return sourceId;
    }

    public void setSourceId(String sourceId) {
        this.sourceId = sourceId;
    }

    public String getCompanyShortName() {
        return companyShortName;
    }

    public void setCompanyShortName(String companyShortName) {
        this.companyShortName = companyShortName;
    }

    public String getSeriesCode() {
        return seriesCode;
    }

    public void setSeriesCode(String seriesCode) {
        this.seriesCode = seriesCode;
    }


    
    
    
}
